﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;

namespace LiaisonDonnees
{
   public class Service
    {
        private int id;
        public int Id
        {
            get { return id; }
            set { id = value; }
        }
        private string designation;
        public string Designation
        {
            get { return designation; }
            set { designation = value; }
        }
        private List<Employe> lesEmployes;
        public List<Employe> LesEmployes
        {
            get { return lesEmployes; }
            set { lesEmployes = value; }
        }
        private static int dernierId = 0;
        public Service(string p_designation)
        {
            dernierId++;
            id = dernierId;
            designation = p_designation;
            lesEmployes = new List<Employe>();
        }
        public Service()
        {
            dernierId++;
            id = dernierId;
            lesEmployes = new List<Employe>();
        }
        public Service(XmlElement x_service)
        {
            // Récupération de la valeur du champ "id"
            XmlAttribute x_attr;
            x_attr = x_service.Attributes[0];
            id = int.Parse(x_attr.Value);
            // Mise à jour du champ statique "dernierId"
            if (id > dernierId)
            {
                dernierId = id;
            }
            // Récupération de la désignation
            designation = x_service.ChildNodes[0].InnerText;
            // Instanciation de la liste des employés
            lesEmployes = new List<Employe>();
        }
        public void PreparerSuppression()
        {
            foreach (Employe leEmploye in lesEmployes)
            {
                leEmploye.SupprimerService();
            }
        }
        public override string ToString()
        {
            return designation;
        }
        public Service This
        {
            get { return this; }
        }
        public XmlElement MajElementXml(XmlDocument x_doc, XmlElement x_lesServices)
        {
            XmlElement x_elt;
            XmlAttribute x_attr;
            // Création de l'élément correspondant au service courant comme élément fils de la liste des services
            XmlElement x_service = x_doc.CreateElement("service");
            x_lesServices.AppendChild(x_service);
            // Création et ajout d'un attribut contenant le champ "id" à l'élément représentant le service
            x_attr = x_doc.CreateAttribute("id");
            x_attr.Value = id.ToString();
            x_service.Attributes.Append(x_attr);
            // Création et ajout d'un élément contenant la désignation du service
            x_elt = x_doc.CreateElement("designation");
            x_elt.InnerText = designation;
            x_service.AppendChild(x_elt);
            // Retour de la liste des services mise à jour
            return x_lesServices;
        }
    }
}
